package cn.mw.cmdb.view;

import cn.mw.components.mongodb.entity.SearchParam;
import cn.mw.microMonitorCommon.util.ListMapObjUtils;
import com.google.common.base.Strings;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;

import static cn.mw.cmdb.util.ListSortUtil.compareValues;

public interface ViewConvert<T, R> {
    public static String ascSortModel = "ASC";

    default void init(ViewConvertContext context) throws Exception {

    }

    R convert(T param, ViewConvertContext context) throws Exception;

    default void finish(ViewConvertContext context, List<R> list) throws Exception {

    }
    default void sortList(List data, SearchParam searchParam, ViewConvertContext context){

    }
//
//    default void sortList(List data, SearchParam searchParam, ViewConvertContext context) {
//        if (searchParam != null && !Strings.isNullOrEmpty(searchParam.getSortName())) {
//
//            String sortName = searchParam.getSortName();
//            String sortOrder = searchParam.getSortOrder();
//            boolean ASC_order = (ascSortModel.equals(sortOrder));
//            // 对指定字段进行排序，为空或null的排在最后
//            Collections.sort(data, new Comparator<Object>() {
//                @Override
//                public int compare(Object obj1, Object obj2) {
//                    if (!(obj1 instanceof Map) && !(obj2 instanceof Map)) {
//                        Map m1 = ListMapObjUtils.beanToMap(obj1);
//                        Map m2 = ListMapObjUtils.beanToMap(obj2);
//                        Object value1 = m1.get(sortName);
//                        Object value2 = m2.get(sortName);
//                        return compareValues(value1, value2, ASC_order);
//                    }
//                    return 0;
//                }
//            });
//        }
//    }
}
